Entendí que hay dos tipos de propiedad en objeto, propiedad de datos y propiedad de acceso.
Y podemos acceder a la "propiedad de datos" sin "propiedad de acceso" de esta manera:
const person = { name: 'Pecan' }; console.log(person.name) // getting name data property person.name = 'Pie' // setting name data propertyY supongo que, cuando se ha creado la propiedad de datos, la propiedad de acceso se ha creado internamente con el "nombre" así:
const person = { name: 'Pecan', get name() { return this.name; }, set name(name) { this.name = name; } }¿Tengo razón?
Y supongo que, cuando se ha creado la propiedad de datos, la propiedad de acceso se ha creado internamente
No, no tienes razón. Una propiedad de datos no contiene un getter/setter. Y una propiedad de acceso no contiene un espacio para almacenar un valor. Es uno o el otro, no es como si las propiedades de los datos fueran una capa sobre las propiedades del acceso o al revés.
Podría ser útil usar Object.getOwnPropertyDescriptor para ver qué generan las dos formas diferentes de escribir ese objeto literal:
const personData = { name: 'Pecan', } let personAccessorName = 'Pecan'; const personAccessor = { get name() { return personAccessorName ; }, set name(name) { personAccessorName = name; } }; console.log('data property', Object.getOwnPropertyDescriptor(personData, 'name')); console.log('accessor property', Object.getOwnPropertyDescriptor(personAccessor, 'name')); div.as-console-wrapper { max-height: 100%; }